#=====================================================
# Makefile Test Linux Daemon
# author: Smartcon (www.smartcon.com.br)
# date: 21/03/2013
# breaf: Makefile para compilar todos os projetos
# status: Compilavel
#=====================================================

#=============================================
# Variáveis de compilação
#=============================================
LD = ld
CXX = g++
# Diretorio "raiz" dos fontes
DIR_SRC=../../../src
# Binarios
DIR_BIN=../../../bin
# Temporarios
DIR_TMP=../../../tmp/

# Plataforma
PLAT=linux

# Se não modo deixa pradrao debug
ifeq ($(MODE),)
# Tipo de compilacao
MODE=debug
endif

# Extern Libraries 
DIR_LIB_INTERN=$(DIR_BIN)/$(PLAT)/$(MODE)

DIR_PROJ=LinuxDaemon
# Nome da biblioteca
BIN_FILE=LinuxDaemon
# Diretorio de destino da biblioteca
TARGET=$(DIR_BIN)/$(PLAT)/$(MODE)/$(BIN_FILE) 

#=============================================
# Modo release
#=============================================
ifeq ($(MODE),production)
#-Wall    mostra todos warnings
#-g       modo debug
#-W       para bibliotecas
#-shared  para bibliotecas 
#-pthread multi thread 
FLAGS = \
	-g \
	-Wall \
	-pthread
	
DEFINES= -D _CONSOLE
endif

#=============================================
# Modo release
#=============================================
ifeq ($(MODE),release)
#-Wall    mostra todos warnings
#-g       modo debug
#-W       para bibliotecas
#-shared  para bibliotecas 
#-pthread multi thread 
FLAGS = \
	-g \
	-Wall \
	-pthread
	
DEFINES= -D _LOG -D _CONSOLE
endif

#=============================================
# Modo debug
#=============================================
ifeq ($(MODE),debug)
FLAGS = \
	-Wall \
	-g \
	-pthread 

DEFINES= -D _LOG -D _LOGSTDOUT -D _DEBUG -D _CONSOLE
endif

#=============================================
# Includes da aplicação
#=============================================
INCLUDES= \
	-I. \
	-I$(DIR_SRC)/$(DIR_PROJ)

#=============================================
# Cpps da aplicação
#=============================================
CPPS= \
	$(DIR_SRC)/$(DIR_PROJ)/LinuxDaemon.cpp

#=============================================
# Objetos da aplicação
#=============================================
OS= \
	$(DIR_TMP)/LinuxDaemon.o 
	
#=============================================
# Dependencias da aplicação
#=============================================
DEPENDENCIES= \
	-L$(DIR_BIN)/$(PLAT)/$(MODE) \
	#-L$(DIR_SRC)/../poco-1.4.6p1-all/lib/Linux/i686/ \
	#-lPocoDataMySQL -lPocoData -lmysqlclient \
	#-lPocoNet -lPocoFoundation \
	#-lxerces-c -lSEDp -lcurl
	
#=============================================
# Inicial a compilação...
#=============================================
all : compile link

#=============================================
# Linka compilação
#=============================================
link :
	$(CXX) $(FLAGS) -v \
	$(OS) \
	$(DEPENDENCIES) \
	-o $(TARGET)
	chmod +x $(TARGET)

#=============================================
# Compila projeto
#=============================================
compile: clean init 
	$(CXX) $(FLAGS) \
	-c $(CPPS) \
	$(INCLUDES) \
	$(DEFINES) 
	mv *.o $(DIR_TMP)
		
#=============================================
# Prepara projeto para compilação
#=============================================
init :
	mkdir -p $(DIR_BIN)/$(PLAT)/$(MODE)
	mkdir -p $(DIR_TMP)

#=============================================
# Limpa programas temporários
#=============================================
clean :
	rm -rf $(TARGET)
	rm -rf $(DIR_TMP)
	 
 
